home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / et / et3_0-a1.lha / et3 / src / ImageItem.C < prev    next >
C/C++ Source or Header  |  1992-05-05  |  2KB  |  83 lines

  1. #ifdef __GNUG__
  2. #pragma implementation
  3. #endif
  4.  
  5. #include "ImageItem.h"
  6.  
  7. #include "Class.h"
  8.  
  9. //---- ImageItem ---------------------------------------------------------------
  10.  
  11. NewMetaImpl(ImageItem,VObject, (TP(bmp), T(base), TB(deleteBitmap)));
  12.  
  13. ImageItem::ImageItem(Bitmap *b, int bs, bool freeold)
  14. {
  15.     deleteBitmap= freeold;
  16.     base= bs;
  17.     bmp= b;
  18.     SetFlag(eVObjHFixed | eVObjVFixed);
  19. }
  20.  
  21. ImageItem::ImageItem(int id, Bitmap *b, int bs, bool freeold) : VObject(id)
  22. {
  23.     deleteBitmap= freeold;
  24.     base= bs;
  25.     bmp= b;
  26.     SetFlag(eVObjHFixed | eVObjVFixed);
  27. }
  28.  
  29. ImageItem::ImageItem(short *s, Point e, int bs)
  30. {
  31.     deleteBitmap= TRUE;
  32.     base= bs;
  33.     bmp= new Bitmap(e, (u_short*)s);
  34.     SetFlag(eVObjHFixed | eVObjVFixed);
  35. }
  36.  
  37. ImageItem::~ImageItem()
  38. {
  39.     if (deleteBitmap)
  40.     SafeDelete(bmp);
  41. }
  42.  
  43. void ImageItem::SetBitmap(Bitmap *bm, bool redraw)
  44. {
  45.     if (deleteBitmap && bmp)
  46.     delete bmp;
  47.     deleteBitmap= FALSE;
  48.     bmp= bm;
  49.     SetContentRect(Rectangle(GetOrigin(), GetMinSize().extent), redraw);
  50. }
  51.  
  52. Metric ImageItem::GetMinSize()
  53. {
  54.     return Metric(bmp->Size(), base ? base : bmp->Size().y);
  55. }
  56.  
  57. void ImageItem::Draw(Rectangle)
  58. {
  59.     GrPaintBitMap(contentRect, bmp, Enabled() ? ePatBlack : ePatGrey50);
  60. }
  61.  
  62. void ImageItem::DoObserve(int, int part, void*, Object *op)
  63. {
  64.     if (op == bmp && part != cPartSenderDied)
  65.     ForceRedraw();
  66. }
  67.  
  68. OStream& ImageItem::PrintOn (OStream &s)
  69. {
  70.     VObject::PrintOn(s);
  71.     return s << bmp SP << base SP;
  72. }
  73.  
  74. IStream& ImageItem::ReadFrom(IStream &s)
  75. {
  76.     if (deleteBitmap)
  77.     SafeDelete(bmp);
  78.     deleteBitmap= TRUE;
  79.     VObject::ReadFrom(s);
  80.     return s >> bmp >> base;
  81. }
  82.  
  83.